package org.dromara.system.domain.policy.vo;

import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.system.domain.policy.Policy;

import java.io.Serial;
import java.io.Serializable;

/**
 * 承保单主视图对象 policy
 *
 * @author Lion Li
 * @date 2025-11-16
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = Policy.class)
public class PolicyImportVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 自增主键
     */
    @ExcelProperty(value = "自增主键")
    private Long id;

    /**
     * 保单号（批量查询字段）
     */
    @ExcelProperty(value = "保单号")
    private String policyId;

    /**
     * 投保单号（批量查询字段）
     */
    @ExcelProperty(value = "投保单号")
    private String applicationId;

    /**
     * 保单生效时间-未找到
     */
    @ExcelProperty(value = "保单生效时间")
    private String effectiveTime;

    /**
     * 保单终止时间-未找到
     */
    @ExcelProperty(value = "保单终止时间")
    private String expireTime;

    /**
     * 产品编码
     */
    @ExcelProperty(value = "产品编码")
    private String productCode;

    /**
     * 险种编码
     */
    @ExcelProperty(value = "标的物编码")
    private String insuranceCode;

    /**
     * 险种编码名称-未找到
     */
    @ExcelProperty(value = "标的物编码")
    private String insuranceCodeName;

    /**
     * 险种名称
     */
    @ExcelProperty(value = "方案名称")
    private String insuranceName;

    /**
     * 用户PIN
     */
    @ExcelProperty(value = "账户名称")
    private String userPin;

    /**
     * 店铺ID
     */
    @ExcelProperty(value = "商家ID")
    private String shopId;

    /**
     * 店铺名称-对应关系
     */
    @ExcelProperty(value = "投保人姓名/企业名称")
    private String shopName;

    /**
     * 商品编码-对应关系
     */
    @ExcelProperty(value = "标的物编码")
    private String commodityCode;

    /**
     * 商品名称-对应关系
     */
    @ExcelProperty(value = "标的物名称")
    private String commodityName;

    /**
     * 主商品品牌
     */
    @ExcelProperty(value = "主商品品牌")
    private String brand;

    /**
     * 主商品型号
     */
    @ExcelProperty(value = "主商品型号")
    private String model;

    /**
     * 收货省ID
     */
    @ExcelProperty(value = "收货省 ID")
    private String receiveProvinceId;

    /**
     * 主商品订单号（批量查询）-对应关系
     */
    @ExcelProperty(value = "商城订单号")
    private String mainOrderId;

    /**
     * 商家ID
     */
    @ExcelProperty(value = "商家 ID")
    private String merchantId;

    /**
     * 一级类目ID
     */
    @ExcelProperty(value = "一级类目 ID")
    private String firstCategoryId;

    /**
     * 二级类目ID
     */
    @ExcelProperty(value = "二级类目 ID")
    private String secondCategoryId;

    /**
     * 主商品三级类目-对应关系
     */
    @ExcelProperty(value = "标的物类目 ID")
    private String thirdCategoryName;

    /**
     * 保单状态
     */
    @ExcelProperty(value = "保单状态")
    private String policyStatus;

    /**
     * 是否实收
     */
    @ExcelProperty(value = "是否实收")
    private String isReceived;

    /**
     * 是否共保
     */
    @ExcelProperty(value = "是否共保")
    private String isCoInsurance;

    /**
     * 业务来源（多条件查询）
     */
    @ExcelProperty(value = "业务来源")
    private String businessSource;

    /**
     * 保单创建日期（分区键）--对应关系
     */
//    @ExcelProperty(value = "保单创建时间")
    @ExcelProperty(value = "保单创建时间")
    private String createDate;

    /**
     * 应收保费(保费实收)
     */
    @ExcelProperty(value = "应收保费(保费实收)")
    private Long premiumReceivable;

    /**
     * 保额
     */
    @ExcelProperty(value = "保额")
    private Long insuredAmount;

    /**
     * 保障期间值
     */
    @ExcelProperty(value = "保障期间值")
    private String coveragePeriod;

    /**
     * 标的物数量
     */
    @ExcelProperty(value = "标的物数量")
    private String subjectQuantity;

    /**
     * 主商品京东价-对应关系
     */
    @ExcelProperty(value = "sku总格")
    private Long mainCommodityPrice;

    /**
     * 标的物类目ID
     */
    @ExcelProperty(value = "标的物类目 ID")
    private String subjectCategoryId;

    /**
     * 佣金率
     */
    @ExcelProperty(value = "成功标识#佣金率")
    private String commissionRate;
}
